// fileProcessor.js
const fs = require('fs').promises;
const path = require('path');

// 假设这是一个全局的Set，用于存储已读取的文件路径
let readFiles = new Set();

// 读取单个文件并返回内容
async function readFileContent(filePath, counts) {
    try {
        // 读取文件内容
        const data = await fs.readFile(filePath, 'utf8');

        // 将文件路径添加到已读取集合中
        readFiles.add(filePath, counts);

        // console.log("filePath", filePath)
        const emailRegex = /\\([^\\]*?)(?=\.txt$)/;
        const match = filePath.match(emailRegex);
        const email = match[1]

        // console.log()
        console.log("完成第" + counts | '问题读取！' + "个文件读取,", email)
            // const match = filename.match(/^([^.]*?)(?=\.txt)$/);

        // 返回文件内容
        return { data: data, email: email };

    } catch (error) {
        console.error(`Error reading file ${filePath}:`, error);
        throw error; // 抛出错误以便在调用者中捕获
    }
}

let conuts = 0;
// 获取一个新的、未读取的txt文件路径（这里简化处理，仅作为示例）
async function getNewTxtFilePath(dirPath) {
    try {

        // 读取目录中的所有文件
        const files = await fs.readdir(dirPath, { withFileTypes: true });

        // 筛选出txt文件且未被读取的
        const unreadTxtFiles = files
            .filter(dirent => dirent.isFile() && dirent.name.endsWith('.txt') && !readFiles.has(path.join(dirPath, dirent.name)))
            .map(dirent => path.join(dirPath, dirent.name));

        console.log("一共有", unreadTxtFiles.length, "个文件等待处理！")
            // 如果存在未读取的文件，则返回其中一个文件的路径（这里简化为返回第一个）
            // if (unreadTxtFiles.length > 1202) {
        if (unreadTxtFiles.length > 0) {
            // if (unreadTxtFiles.length > 5912) {
            console.log(" TxtFiles.length ", unreadTxtFiles.length)
            conuts++;
            // return unreadTxtFiles;
            return unreadTxtFiles[0];
        } else {
            // 如果没有未读取的文件，可以抛出一个错误或返回一个null/undefined值
            // throw new Error('No unread txt files found in the directory.');
            console.log("全部文本处理完毕,共计:", conuts, "个Txt文件。")
            return ''
        }

    } catch (error) {
        console.error('Error getting new txt file path:', error);
        throw error; // 抛出错误以便在调用者中捕获
    }
}

// 导出模块函数
module.exports = {
    readFileContent,
    getNewTxtFilePath
};